//#define _CRT_SECURE_NO_WARNINGS 1
//#include<stdio.h>
//#include<stdlib.h>
//
//typedef int DataType;
//typedef struct LNode
//{
//	DataType data;
//	struct LNode* next;
//}LNode, *LinkList;
//
//LinkList Intersection(LinkList A, LinkList B)
//{
//	LNode* p, * q, * r, * s;
//	LinkList C;
//	C = (LNode*)malloc(sizeof(LNode));
//	if (C == NULL)
//		exit(-1);
//	C->next = NULL;
//	r = C;
//	p = A->next;
//	q = B->next;
//	while (p && q)
//	{
//		if (p->data < q->data)
//			p = p->next;
//		else if (p->data == q->data)
//		{
//			s = (LNode*)malloc(sizeof(LNode));
//			if (s == NULL)
//				exit(-1);
//			s->data = p->data;
//			s->next = NULL;
//			r->next = s;
//			r = s;
//			p = p->next;
//			q = q->next;
//		}
//		else
//			q = q->next;
//	}
//	C = C->next;
//	return C;
//}
//
//int main()
//{
//	LinkList A = (LNode*)malloc(sizeof(LNode));
//	if (A == NULL)
//		exit(-1);
//	LNode s1 = { 1, NULL };
//	LNode s2 = { 3, NULL };
//	LNode s3 = { 6, NULL };
//	LNode s4 = { 9, NULL };
//	LNode s5 = { 11, NULL };
//	A->next = &s1;
//	s1.next = &s2;
//	s2.next = &s3;
//	s3.next = &s4;
//	s4.next = &s5;
//	LinkList B = (LNode*)malloc(sizeof(LNode));
//	if (B == NULL)
//		exit(-1);
//	LNode s6 = { 3,NULL };
//	LNode s7 = { 8,NULL };
//	LNode s8 = { 9,NULL };
//	LNode s9 = { 10,NULL };
//	LNode s10 = { 11,NULL };
//	B->next = &s6;
//	s6.next = &s7;
//	s7.next = &s8;
//	s8.next = &s9;
//	s9.next = &s10;
//	LinkList C = Intersection(A, B);
//	LinkList cur = C;
//	while (cur)
//	{
//		printf("%d ", cur->data);
//		cur = cur->next;
//	}
//	return 0;
//}